const express = require("express");
const router = express.Router();
const { check } = require("express-validator");
const { validateRequest, customValidations } = require("../../middleware/validationMiddleware");
const dictDataController = require("../../controllers/dictDataController");

// 获取字典数据分页列表
router.get(
  "/dict-data/page",
  [
    check("pageNum").exists().withMessage("pageNum参数缺失")
      .isInt({ min: 1 }).withMessage("pageNum必须为大于0的整数"),
    check("pageSize").exists().withMessage("pageSize参数缺失")
      .isInt({ min: 1, max: 100 }).withMessage("pageSize必须为1-100之间的整数"),
    check("dictCode").exists().withMessage("dictCode参数缺失")
      .custom(customValidations.isValidDictCode).withMessage("字典编码格式不正确"),
    check("status").optional().isIn([0, 1]).withMessage("status必须为0或1"),
    check("keywords").optional().isString().withMessage("keywords必须为字符串"),
  ],
  validateRequest,
  dictDataController.getDictDataPage
);

// 获取字典数据列表
router.get(
  "/dict-data",
  [
    check("dictCode").exists().withMessage("dictCode参数缺失")
      .custom(customValidations.isValidDictCode).withMessage("字典编码格式不正确"),
    check("status").optional().isIn([0, 1]).withMessage("status必须为0或1"),
    check("label").optional().isString().withMessage("label必须为字符串"),
  ],
  validateRequest,
  dictDataController.getDictDataList
);

// 根据ID获取字典数据详情
router.get(
  "/dict-data/:id",
  [check("id").exists().withMessage("id参数缺失")
    .isInt({ min: 1 }).withMessage("id必须为大于0的整数")],
  validateRequest,
  dictDataController.getDictDataById
);

// 新增字典数据
router.post(
  "/dict-data",
  [
    check("dictCode").exists().withMessage("dict_code参数缺失")
      .custom(customValidations.isValidDictCode).withMessage("字典编码格式不正确"),
    check("label").exists().withMessage("label参数缺失")
      .isString().withMessage("label必须为字符串"),
    check("value").exists().withMessage("value参数缺失")
      .isString().withMessage("value必须为字符串"),
    check("sort").optional().isInt({ min: 0 }).withMessage("sort必须为大于等于0的整数"),
    check("status").optional().isIn([0, 1]).withMessage("status必须为0或1"),
  ],
  validateRequest,
  dictDataController.createDictData
);

// 更新字典数据
router.put(
  "/dict-data/:id",
  [
    check("id").exists().withMessage("id参数缺失")
      .isInt({ min: 1 }).withMessage("id必须为大于0的整数"),
    check("dict_code").optional()
      .custom(customValidations.isValidDictCode).withMessage("字典编码格式不正确"),
    check("label").optional().isString().withMessage("label必须为字符串"),
    check("value").optional().isString().withMessage("value必须为字符串"),
    check("sort").optional().isInt({ min: 0 }).withMessage("sort必须为大于等于0的整数"),
    check("status").optional().isIn([0, 1]).withMessage("status必须为0或1"),
  ],
  validateRequest,
  dictDataController.updateDictData
);

// 删除字典数据
router.delete(
  "/dict-data/:id",
  [check("id").exists().withMessage("id参数缺失")],
  validateRequest,
  dictDataController.deleteDictData
);

module.exports = router;
